/*
 * Copyright 2022 Huawei Cloud Computing Technology Co., Ltd.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

// ICASAidlInterfaceCasCloudAppActivityaidl
package com.huawei.cloudphone;

// Declare any non-default types here with import statements
import android.view.Surface;
import com.huawei.cloudphone.ICASAidlListener;
import com.huawei.cloudphone.common.CasConnectorInfo;
import com.huawei.cloudphone.common.CasParcelableMap;

interface ICASAidlInterface {
    /**
     * Demonstrates some basic types that you can use as parameters
     * and return values in AIDL.
     */
    void init();

    void setEncryptData(in String encryptData);

    void setSurface(in Surface suf);

    boolean start(in boolean isHome);

    void stop(in boolean isHome);

    void pause();

    void resume();

    boolean isConnect();

    int getState();

    boolean reconnect();

    void registerListener(in IBinder listener);

    void unregisterListener();

    boolean sendTouchEvent(in int id, in int action, in int x, in int y, in int pressure, long time, int orientation, int height, int width);

    boolean sendKeyEvent(int keycode, int action);

    boolean sendMotionEvent(int materAxis, int materValue, int secondaryAxis, int secondaryValue);

    void setCasConnectorInfo(in CasConnectorInfo info);

    void setMediaConfig(in CasParcelableMap mediaConfigMap);

    boolean setRotation(in int rotation);

    int getLag();

    boolean startJniRecv();

    void stopJniRecv();

    void mute(in boolean isMute);

    void sendData(byte type, in byte[] data);
}
